Modern data communication architectures involve commonly “server farms”, a collective of servers that manage storage, processing, and exchange of data for a variety of purposes. Many services are increasingly provided as web applications, hosted applications that may be accessed by users through browsers or similar thin clients without burdening the users with local installations, updates, compatibility issues, etc. Thus, a server farm may include up to thousands of servers providing web applications for productivity, communications, data analysis, data storage, and comparable services. Client applications (thin or thick) interact with the hosted applications through “requests”. For example, a word processing application provided as a web application may receive a request from a client application to open a document, find the document in a networked store, retrieve its contents, and render at the client application. Another example may be a “Save” request. When the user is done, they may select a “Save” control on the client application, which may send a save request to the web application resulting in updating of the stored document.
Because a number of servers may be involved with the web application, an incoming request needs to be directed to the proper server(s) such that the requested task can be completed. Request management is one of the management approaches that helps a server farm manage incoming requests by evaluating logic rules against the requests in order to determine which action to take, and which server or servers in the farm (if any) is to handle the requests.
Traditional load balancing and routing is typically based on static rules failing to take into account dynamic changes in servers, requests, network loads. Furthermore, with an increasing number of different services and versions of services being offered through server farms, managing different types of requests and different types of servers (dedicated, good health, bad health, tenant-specific, supporting different versions of applications, etc.) is a complex undertaking.